<?php namespace Common\Model;

use Hdphp\Model\Model;

class Arc extends Model{

	//指定表名

	protected $table ='article';

	//验证数据类型是否正确

	protected $validate=array(

		array('title','required','文章标题名不能为空',3,3),

		array('author','required','作者名不能为空',3,3)

	);

	//自动完成

	protected $auto=array(

		//array(字段名,处理方法,方法类型,验证条件,处理时间) 

		array('sendtime','time','function',3,1),

		array('updatetime','time','function',3,3),

		array('user_uid','getUid','method',3,1),

		array('thumb','getThumb','method',3,3)

	);

	//上传图片处里

	public function getThumb(){

		//接收编辑页面隐藏域传过来的图片的地址

		$oldImg=Q('post.thumb');

		//允许用户上传空文件夹

		if($_FILES['thumb']['error']==4){

			//如果我在列表的隐藏域有内容就表示是修改不可能是添加

			if($oldImg){

				//直接返回以前的数据

				return $oldImg;

			}

			return '';

		}

		//获得限制的上传文件
	    $file=Upload::type('jpg,jpeg,png,bmp')->make();

		if($file){

			//如果用户在上传的时候图片地址栏有数据且有就的图片就表名是在修改图片

			if($oldImg){

				//删除缩略图

//				p($oldImg);

				unlink($oldImg);

				//删除原图

				$path = str_replace('_thump', '', $oldImg);

//				p($path);

//				echo 1;

//				exit;

				unlink($path);

			}

			//形成新的缩略图地址

			$path=$file['0']['path'];//Upload/67051469925939.bmp

			$type=strrchr($path,'.');//.bmp

			$newPath=str_replace($type,'_thump'.$type,$path);//Upload/19661469928342_thump.bmp

			//缩略图

			Image::thumb($path,$newPath,C('webSet.THUMB_HEIGHT'),C('webSet.THUMB_WEIGHT'),5);

			//上传成功返回数据

			return $newPath;

		}

		//把上传错误的信息放入到当前错误信息的模板里

		$this->error = Upload::getError();
	}

	

	//获取当前用户的uid

	public function getUid(){

		return $_SESSION['uid'];
	}

	//添加文章

	public function store(){

		if(!$this->check()) return FALSE;					

		//1.添加article成功提示

	    $aid=$this->add();

	   	//2.添加article_data表

	   	$arcDataModel = new \Common\Model\ArcData;
                $arcDataModel->create();

	   	$arcDataModel->data['article_aid']=$aid;

		$arcDataModel->add();

		//3.添加article_tag中间表

		$arcTagModel=new \Common\Model\ArcTag;

		$arcTagModel->store($aid);

	    return TRUE;
	}

	public function edit(){

		//一====样子数据是否正确

	 	   if(!$this->check()) return FALSE;

		   

		   $aid = Q('post.aid',0,'intval');

		 

		   //二====修改=================

		   //1修改article表里的数据

		   $this->where("aid={$aid}")->save();

		   //2article_tag中间表

		   $arcTagModel=new \Common\Model\ArcTag;

		   //先删除

		   $arcTagModel->where("article_aid={$aid}")->delete();

			//再添加

			$arcTagModel->store($aid);

			//3.article_data实例化之后与原模型就没有什么关系了

			$arcDataModel = new \Common\Model\ArcData;

			$arcDataModel->create();

			$arcDataModel->where("article_aid={$aid}")->save();

			return TRUE;

	}

	//验证article表与article_data表的内容是否正确

	public function check(){
	    //验证文章的内容格式是否满足要求

	    if(!$this->create()) return false;

		//验证article_data表里的内容是否为空

		$arcDataModel = new \Common\Model\ArcData;

		if(!$arcDataModel->create()){

			//把arcData模型的错误压入到当前模型，这样外部控制才能获取到错误

			$this->error = $arcDataModel->getError();

			return false;

		}

		//验证图片上传格式是否满足要求

		if($this->error) return false;

		

		return true;
	}

	//获得文章和关联表数据===>这个已经在控制器里面写了！！！

	public function getArcCate(){

	    $arcCategory=$this->join('category','category_cid','=','cid')->where('is_recycle=0')->get();

		return $arcCategory;

	}

				

}







































































































































